home *** CD-ROM | disk | FTP | other *** search
- *** 1.1 1992/04/02 22:37:22
- --- Makefile 1992/04/03 03:33:36
- ***************
- *** 1,3 ****
- --- 1,9 ----
- + # HISTORY
- + # 31-Jul-91 Shin Iwamoto (shin) at CANON Inc.
- + # Added difinitions for STONE.
- + # old day Shin Iwamoto (shin) at CANON Inc.
- + # Added -DCANON.
- +
- # Makefile for GAS.
- # Copyright (C) 1989, Free Software Foundation
- #
- ***************
- *** 21,32 ****
- # SPARC, ns32k, or i860 assembler(s).
-
- BINDIR = /usr/local/bin
- ! #CC=gcc
-
- # If you are on a BSD system, un-comment the next two lines, and comment out
- # the lines for SystemV and HPUX below
- ! G0 = -g -I. #-O -Wall
- ! LDFLAGS = $(CFLAGS)
- #
- # To compile gas on a System Five machine, comment out the two lines above
- # and un-comment out the next three lines
- --- 27,43 ----
- # SPARC, ns32k, or i860 assembler(s).
-
- BINDIR = /usr/local/bin
- ! CC=gcc
-
- # If you are on a BSD system, un-comment the next two lines, and comment out
- # the lines for SystemV and HPUX below
- ! #G0 = -g -I. #-O -Wall
- ! #LDFLAGS = $(CFLAGS)
- ! #
- ! # To compile gas for STONE, link m-stone.h to m68k.h, and un-comment the
- ! # next two lines.
- ! G0 = -g -I. -Dm68040 -DCANON #-O -Wall
- ! LDFLAGS =
- #
- # To compile gas on a System Five machine, comment out the two lines above
- # and un-comment out the next three lines
- ***************
- *** 122,128 ****
-
- G1 = # -DUSE_SYSTEM_HDR
- G2 = # -DUSE_HP_HDR
- ! G3 = # -DSUN_ASM_SYNTAX
-
- OPTIONS = $(O1) $(O2) $(O3) $(O4) $(O5) $(O6) $(O7) $(O8) $(O9) $(O10)
-
- --- 133,139 ----
-
- G1 = # -DUSE_SYSTEM_HDR
- G2 = # -DUSE_HP_HDR
- ! G3 = -DSUN_ASM_SYNTAX
-
- OPTIONS = $(O1) $(O2) $(O3) $(O4) $(O5) $(O6) $(O7) $(O8) $(O9) $(O10)
-
- *** 1.1 1992/04/02 22:42:46
- --- Makefile.st 1992/04/03 03:33:37
- ***************
- *** 118,124 ****
- #
-
- CC=$(CROSSBIN)/cgcc
- ! CFLAGS = -O -I. -I$(CROSSINC) $(OPTIONS)
- LDFLAGS = $(CFLAGS)
- # To compile gas on a System Five machine, comment out the two lines above
- # and un-comment out the next three lines
- --- 118,124 ----
- #
-
- CC=$(CROSSBIN)/cgcc
- ! CFLAGS = -O2 -fomit-frame-pointer -fstrength-reduce -I. -I$(CROSSINC) $(OPTIONS)
- LDFLAGS = $(CFLAGS)
- # To compile gas on a System Five machine, comment out the two lines above
- # and un-comment out the next three lines
- *** 1.2 1992/04/02 22:42:46
- --- app.c 1992/04/03 03:33:39
- ***************
- *** 257,262 ****
- --- 257,268 ----
- (*unget)(ch);
- goto flushchar;
- }
- + #ifdef CANON
- + if(ch==':') {
- + (*unget)(ch);
- + goto flushchar;
- + }
- + #endif CANON
- (*unget)(ch);
- if(state==0 || state==2) {
- state++;
- *** 1.2 1992/04/02 22:42:46
- --- as.c 1992/04/03 03:33:39
- ***************
- *** 181,187 ****
- --- 181,193 ----
- compiler_version_string = arg;
- }
- #else /* not VMS */
- + #if defined(CROSSATARI) || defined(atarist) || defined(atariminix)
- + #include "PatchLev.h"
- + fprintf(stderr, "%s atariST PatchLevel %s\n",
- + version_string, PatchLevel);
- + #else
- fprintf(stderr,version_string);
- + #endif
- if(*arg && strcmp(arg,"ersion"))
- as_warn("Unknown -v option ignored");
- #endif
- *** 1.2 1992/04/02 22:42:46
- --- m68k-opcode.h 1992/04/03 03:33:48
- ***************
- *** 1,3 ****
- --- 1,17 ----
- + /*
- + * HISTORY
- + * 09-Aug-91 Shin Iwamoto (shin) at CANON Inc.
- + * Added the following floating-point instruction on mc68040:
- + * F[SD]ADD, F[SD]SUB, F[SD]MUL, F[SD]DIV, F[SD]ABS,
- + * F[SD]NEG, F[SD]SQRT, F[SD]MOVE
- + * Removed fsubx with one register.
- + * 07-Aug-91 Shin Iwamoto (shin) at CANON Inc.
- + * Added definitions for indirectly supported floating-point
- + * instructions on mc68040.
- + * 23-Jan-91 K. Chyo (chyo) at DPS of CANON Inc.
- + * Enhanced for mc68040 support.
- + */
- +
- /* Opcode table for m68000/m68020 and m68881.
- Copyright (C) 1989, Free Software Foundation.
-
- ***************
- *** 17,23 ****
- along with GDB or GAS; see the file COPYING. If not, write to
- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
- -
- struct m68k_opcode
- {
- char *name;
- --- 31,36 ----
- ***************
- *** 87,92 ****
- --- 100,115 ----
- 802 CAAR Cache Address Register
- 803 MSP Master Stack Pointer
- 804 ISP Interrupt Stack Pointer
- + #ifdef m68040
- + 003 MMU Translation Control reg
- + 004 Instruction Transparant Tlanslation reg 0
- + 005 Instruction Transparant Tlanslation reg 1
- + 006 Data Transparant Tlanslation reg 0
- + 007 Data Transparant Tlanslation reg 1
- + 805 MMU Status reg
- + 806 User Root Pointer
- + 807 Supervisor Root Pointer
- + #endif m68040
-
- L Register list of the type d0-d7/a0-a7 etc.
- (New! Improved! Can also hold fp0-fp7, as well!)
- ***************
- *** 111,116 ****
- --- 134,145 ----
- / control, or data register (modes 0,2,5,6,7.0,7.1,7.2,7.3)(not 1,3,4,7.4)
- */
-
- + #ifdef m68040
- + /*
- + a address register indirect only. Stored as 3 bits.
- + c cache immediate data. Stored as 2 bits.
- + */
- + #endif m68040
- /* JF: for the 68851 */
- /*
- I didn't use much imagination in choosing the
- ***************
- *** 1185,1191 ****
- {"fsubw", two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- {"fsubx", two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7"},
- {"fsubx", two(0xF000, 0x4828), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- ! {"fsubx", two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiFt"},
-
- {"ftanb", two(0xF000, 0x580F), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- {"ftand", two(0xF000, 0x540F), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- --- 1214,1220 ----
- {"fsubw", two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- {"fsubx", two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7"},
- {"fsubx", two(0xF000, 0x4828), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- ! /* {"fsubx", two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiFt"}, Shin removed */
-
- {"ftanb", two(0xF000, 0x580F), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- {"ftand", two(0xF000, 0x540F), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- ***************
- *** 1478,1483 ****
- --- 1507,1686 ----
- {"movsw", two(0007100, 0), two(0177700, 07777), "~sR1"},
- {"movsw", two(0007100, 04000), two(0177700, 07777), "R1~s"},
-
- + #ifdef m68040
- + {"mov16", two(0173040, 0100000), two(0177770, 0100000), "+s+1"},
- + {"mov16", one(0173000), one(0177770), "+s#l"},
- + {"mov16", one(0173010), one(0177770), "#l+s"},
- + {"mov16", one(0173020), one(0177770), "as#l"},
- + {"mov16", one(0173030), one(0177770), "#las"},
- +
- + {"cinvl", one(0172010), one(0177470), "c9as"},
- + {"cinvp", one(0172020), one(0177470), "c9as"},
- + {"cinva", one(0172030), one(0177470), "c9"},
- +
- + {"cpushl", one(0172050), one(0177470), "c9as"},
- + {"cpushp", one(0172060), one(0177470), "c9as"},
- + {"cpusha", one(0172070), one(0177470), "c9"},
- +
- + {"pflushn", one(0172400), one(0177770), "as"},
- + {"pflush", one(0172410), one(0177770), "as"},
- + {"pflushan", one(0172420), one(0177770), ""},
- + {"pflusha", one(0172430), one(0177770), ""},
- +
- + {"ptestw", one(0172510), one(0177770), "as"},
- + {"ptestr", one(0172550), one(0177770), "as"},
- +
- + {"fsaddb", two(0xF000, 0x5862), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fsaddd", two(0xF000, 0x5462), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fsaddl", two(0xF000, 0x4062), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fsaddp", two(0xF000, 0x4C62), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fsadds", two(0xF000, 0x4462), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fsaddw", two(0xF000, 0x5062), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fsaddx", two(0xF000, 0x0062), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fsaddx", two(0xF000, 0x4862), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fdaddb", two(0xF000, 0x5866), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fdaddd", two(0xF000, 0x5466), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fdaddl", two(0xF000, 0x4066), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fdaddp", two(0xF000, 0x4C66), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fdadds", two(0xF000, 0x4466), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fdaddw", two(0xF000, 0x5066), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fdaddx", two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fdaddx", two(0xF000, 0x4866), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fssubb", two(0xF000, 0x5868), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fssubd", two(0xF000, 0x5468), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fssubl", two(0xF000, 0x4068), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fssubp", two(0xF000, 0x4C68), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fssubs", two(0xF000, 0x4468), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fssubw", two(0xF000, 0x5068), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fssubx", two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fssubx", two(0xF000, 0x4868), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fdsubb", two(0xF000, 0x586C), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fdsubd", two(0xF000, 0x546C), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fdsubl", two(0xF000, 0x406C), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fdsubp", two(0xF000, 0x4C6C), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fdsubs", two(0xF000, 0x446C), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fdsubw", two(0xF000, 0x506C), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fdsubx", two(0xF000, 0x006C), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fdsubx", two(0xF000, 0x486C), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fsmulb", two(0xF000, 0x5863), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fsmuld", two(0xF000, 0x5463), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fsmull", two(0xF000, 0x4063), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fsmulp", two(0xF000, 0x4C63), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fsmuls", two(0xF000, 0x4463), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fsmulw", two(0xF000, 0x5063), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fsmulx", two(0xF000, 0x0063), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fsmulx", two(0xF000, 0x4863), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fdmulb", two(0xF000, 0x5867), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fdmuld", two(0xF000, 0x5467), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fdmull", two(0xF000, 0x4067), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fdmulp", two(0xF000, 0x4C67), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fdmuls", two(0xF000, 0x4467), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fdmulw", two(0xF000, 0x5067), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fdmulx", two(0xF000, 0x0067), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fdmulx", two(0xF000, 0x4867), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fsdivb", two(0xF000, 0x5860), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fsdivd", two(0xF000, 0x5460), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fsdivl", two(0xF000, 0x4060), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fsdivp", two(0xF000, 0x4C60), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fsdivs", two(0xF000, 0x4460), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fsdivw", two(0xF000, 0x5060), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fsdivx", two(0xF000, 0x0060), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fsdivx", two(0xF000, 0x4860), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fddivb", two(0xF000, 0x5864), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fddivd", two(0xF000, 0x5464), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fddivl", two(0xF000, 0x4064), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fddivp", two(0xF000, 0x4C64), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fddivs", two(0xF000, 0x4464), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fddivw", two(0xF000, 0x5064), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fddivx", two(0xF000, 0x0064), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fddivx", two(0xF000, 0x4864), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fsabsb", two(0xF000, 0x5858), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fsabsd", two(0xF000, 0x5458), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fsabsl", two(0xF000, 0x4058), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fsabsp", two(0xF000, 0x4C58), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fsabss", two(0xF000, 0x4458), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fsabsw", two(0xF000, 0x5058), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fsabsx", two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fsabsx", two(0xF000, 0x4858), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- + {"fsabsx", two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiFt"},
- +
- + {"fdabsb", two(0xF000, 0x585C), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fdabsd", two(0xF000, 0x545C), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fdabsl", two(0xF000, 0x405C), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fdabsp", two(0xF000, 0x4C5C), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fdabss", two(0xF000, 0x445C), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fdabsw", two(0xF000, 0x505C), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fdabsx", two(0xF000, 0x005C), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fdabsx", two(0xF000, 0x485C), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- + {"fdabsx", two(0xF000, 0x005C), two(0xF1C0, 0xE07F), "IiFt"},
- +
- + {"fsnegb", two(0xF000, 0x585A), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fsnegd", two(0xF000, 0x545A), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fsnegl", two(0xF000, 0x405A), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fsnegp", two(0xF000, 0x4C5A), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fsnegs", two(0xF000, 0x445A), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fsnegw", two(0xF000, 0x505A), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fsnegx", two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fsnegx", two(0xF000, 0x485A), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- + {"fsnegx", two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiFt"},
- +
- + {"fdnegb", two(0xF000, 0x585E), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fdnegd", two(0xF000, 0x545E), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fdnegl", two(0xF000, 0x405E), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fdnegp", two(0xF000, 0x4C5E), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fdnegs", two(0xF000, 0x445E), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fdnegw", two(0xF000, 0x505E), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fdnegx", two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fdnegx", two(0xF000, 0x485E), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- + {"fdnegx", two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt"},
- +
- + {"fssqrtb", two(0xF000, 0x5841), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fssqrtd", two(0xF000, 0x5441), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fssqrtl", two(0xF000, 0x4041), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fssqrtp", two(0xF000, 0x4C41), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fssqrts", two(0xF000, 0x4441), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fssqrtw", two(0xF000, 0x5041), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fssqrtx", two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fssqrtx", two(0xF000, 0x4841), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- + {"fssqrtx", two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiFt"},
- +
- + {"fdsqrtb", two(0xF000, 0x5845), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fdsqrtd", two(0xF000, 0x5445), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fdsqrtl", two(0xF000, 0x4045), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fdsqrtp", two(0xF000, 0x4C45), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fdsqrts", two(0xF000, 0x4445), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fdsqrtw", two(0xF000, 0x5045), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fdsqrtx", two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fdsqrtx", two(0xF000, 0x4845), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- + {"fdsqrtx", two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiFt"},
- +
- + {"fsmoveb", two(0xF000, 0x5840), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fsmoved", two(0xF000, 0x5440), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fsmovel", two(0xF000, 0x4040), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fsmovep", two(0xF000, 0x4C40), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fsmoves", two(0xF000, 0x4440), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fsmovew", two(0xF000, 0x5040), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fsmovex", two(0xF000, 0x0040), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fsmovex", two(0xF000, 0x4840), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- +
- + {"fdmoveb", two(0xF000, 0x5844), two(0xF1C0, 0xFC7F), "Ii;bF7"},
- + {"fdmoved", two(0xF000, 0x5444), two(0xF1C0, 0xFC7F), "Ii;FF7"},
- + {"fdmovel", two(0xF000, 0x4044), two(0xF1C0, 0xFC7F), "Ii;lF7"},
- + {"fdmovep", two(0xF000, 0x4C44), two(0xF1C0, 0xFC7F), "Ii;pF7"},
- + {"fdmoves", two(0xF000, 0x4444), two(0xF1C0, 0xFC7F), "Ii;fF7"},
- + {"fdmovew", two(0xF000, 0x5044), two(0xF1C0, 0xFC7F), "Ii;wF7"},
- + {"fdmovex", two(0xF000, 0x0044), two(0xF1C0, 0xE07F), "IiF8F7"},
- + {"fdmovex", two(0xF000, 0x4844), two(0xF1C0, 0xFC7F), "Ii;xF7"},
- + #endif m68040
- +
- #ifdef m68851
- /* name */ /* opcode */ /* match */ /* args */
-
- ***************
- *** 1683,1685 ****
- --- 1886,1902 ----
- int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
-
- struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
- +
- + #ifdef m68040
- + char *indirect_fp_opcodes[] =
- + {
- + "facos", "fasin", "fatanh", "fatan", "fcosh",
- + "fcos", "fetoxm1", "fetox", "fgetexp", "fgetman",
- + "fintrz", "fint", "flog10", "flog2", "flognp1",
- + "flogn", "fmod", "fmovecr", "frem", "fscale",
- + "fsgldiv", "fsglmul", "fsincos", "fsinh", "fsin",
- + "ftanh", "ftan", "ftentox", "ftwotox",
- + };
- +
- + char **endfpinst = indirect_fp_opcodes+sizeof(indirect_fp_opcodes)/sizeof(indirect_fp_opcodes[0]);
- + #endif m68040
- *** 1.2 1992/04/02 22:42:46
- --- m68k.c 1992/04/03 03:33:48
- ***************
- *** 1,3 ****
- --- 1,18 ----
- + /*
- + * HISTORY
- + * 09-Sep-91 Shin Iwamoto (shin) at CANON Inc.
- + * Changed the default machine type as mc68040.
- + * Only changed the initial value of m68k_kind.
- + * 09-Aug-91 Shin Iwamoto (shin) at CANON Inc.
- + * Supported -m68040 option. When -m68040 is specified,
- + * indirectly supported floating-point instructions and
- + * 68020 instructions (callm and rtm) aren't assembled.
- + * 31-Jul-91 Shin Iwamoto (shin) at CANON Inc.
- + * Changed <caches> definitions for CINV as mnemonic.
- + * 23-Jan-91 K. Chyo (chyo) at DPS of CANON Inc.
- + * Supported instructions on mc68040.
- + */
- +
- /* m68k.c All the m68020 specific stuff in one convenient, huge,
- slow to compile, easy to find file.
- Copyright (C) 1987 Free Software Foundation, Inc.
- ***************
- *** 278,283 ****
- --- 293,315 ----
- #define FPI (MSP+1) /* 45 */
- #define FPS (FPI+1) /* 46 */
- #define FPC (FPS+1) /* 47 */
- +
- + #ifdef m68040
- + #define TC (FPC+1) /* 48 */
- + #define ITT0 (TC+1) /* 49 */
- + #define ITT1 (ITT0+1) /* 50 */
- + #define DTT0 (ITT1+1) /* 51 */
- + #define DTT1 (DTT0+1) /* 52 */
- + #define MMUSR (DTT1+1) /* 53 */
- + #define URP (MMUSR+1) /* 54 */
- + #define SRP (URP+1) /* 55 */
- +
- + #define NC (SRP+1) /* 56 */
- + #define DC (NC+1) /* 57 */
- + #define IC (NC+2) /* 58 */
- + #define BC (NC+3) /* 59 */
- +
- + #else /* m68040 */
- /*
- * these defines should be in m68k.c but
- * i put them here to keep all the m68851 stuff
- ***************
- *** 297,302 ****
- --- 329,335 ----
- #define BAC (BAD+8) /* 64,65,66,67, 68,69,70,71 */
- #define PSR (BAC+8) /* 72 */
- #define PCSR (PSR+1) /* 73 */
- + #endif m68040
-
-
- /* Note that COPNUM==processor #1 -- COPNUM+7==#8, which stores as 000 */
- ***************
- *** 434,439 ****
- --- 467,482 ----
- #define getone(x) ((((x)->m_opcode)>>16)&0xffff)
- #define gettwo(x) (((x)->m_opcode)&0xffff)
-
- + #ifdef m68040
- + /*
- + * When m68k_kind is 4 (meaning m68040), our as doesn't assemble indirectly
- + * supported floating-point instructions. And then the default is 4.
- + */
- + /* int m68k_kind = 4; *
- +
- + /* ++jrb -- change m68k_kind to 0, to use 68040 support use -m68040 arg */
- + int m68k_kind = 4;
- + #endif m68040
-
- /* JF modified this to handle cases where the first part of a symbol name
- looks like a register */
- ***************
- *** 445,451 ****
- --- 488,499 ----
- register char c1,
- c2,
- c3,
- + #ifdef m68040
- + c4,
- + c5;
- + #else
- c4;
- + #endif m68040
- register int n = 0,
- ret = FAIL;
-
- ***************
- *** 457,466 ****
- --- 505,520 ----
- c2=mklower(ccp[0][2]);
- c3=mklower(ccp[0][3]);
- c4=mklower(ccp[0][4]);
- + #ifdef m68040
- + c5=mklower(ccp[0][5]);
- + #endif m68040
- #else
- c2=mklower(ccp[0][1]);
- c3=mklower(ccp[0][2]);
- c4=mklower(ccp[0][3]);
- + #ifdef m68040
- + c5=mklower(ccp[0][4]);
- + #endif m68040
- #endif
- switch(c1) {
- case 'a':
- ***************
- *** 475,480 ****
- --- 529,542 ----
- }
- #endif
- break;
- + #ifdef m68040
- + case 'b':
- + if (c2 == 'c') {
- + n = 2;
- + ret = BC;
- + }
- + break;
- + #endif m68040
- #ifdef m68851
- case 'b':
- if (c2 == 'a') {
- ***************
- *** 532,537 ****
- --- 594,613 ----
- ret = (DRP);
- }
- #endif
- + #ifdef m68040
- + else if (c2 == 't' && c3 == 't' && c4 == '0') {
- + n = 4;
- + ret = DTT0;
- + }
- + else if (c2 == 't' && c3 == 't' && c4 == '1') {
- + n = 4;
- + ret = DTT1;
- + }
- + else if (c2 == 'c') {
- + n = 2;
- + ret = DC;
- + }
- + #endif m68040
- break;
- case 'f':
- if(c2=='p') {
- ***************
- *** 557,562 ****
- --- 633,652 ----
- n=3;
- ret = ISP;
- }
- + #ifdef m68040
- + else if (c2 == 't' && c3 == 't' && c4 == '0') {
- + n = 4;
- + ret = ITT0;
- + }
- + else if (c2 == 't' && c3 == 't' && c4 == '1') {
- + n = 4;
- + ret = ITT1;
- + }
- + else if (c2 == 'c') {
- + n = 2;
- + ret = IC;
- + }
- + #endif m68040
- break;
- case 'm':
- if(c2=='s' && c3=='p') {
- ***************
- *** 563,569 ****
- --- 653,674 ----
- n=3;
- ret = MSP;
- }
- + #ifdef m68040
- + else if (c2 == 'm' && c3 == 'u' && c4 == 's' && c5 == 'r')
- + {
- + n = 5;
- + ret = MMUSR;
- + }
- + #endif m68040
- + break;
- + #ifdef m68040
- + case 'n':
- + if(c2=='c') {
- + n=2;
- + ret = NC;
- + }
- break;
- + #endif m68040
- case 'p':
- if(c2=='c') {
- #ifdef m68851
- ***************
- *** 585,590 ****
- --- 690,701 ----
- #endif
- break;
- case 's':
- + #ifdef m68040
- + if (c2 == 'r' && c3 == 'p') {
- + n = 3;
- + ret = (SRP);
- + } else
- + #endif m68040
- #ifdef m68851
- if (c2 == 'c' && c3 == 'c') {
- n = 3;
- ***************
- *** 605,611 ****
- ret = SFC;
- }
- break;
- ! #ifdef m68851
- case 't':
- if(c2 == 'c') {
- n=2;
- --- 716,722 ----
- ret = SFC;
- }
- break;
- ! #if defined(m68851) || defined(m68040)
- case 't':
- if(c2 == 'c') {
- n=2;
- ***************
- *** 614,619 ****
- --- 725,736 ----
- break;
- #endif
- case 'u':
- + #ifdef m68040
- + if (c2 == 'r' && c3 == 'p') {
- + n = 3;
- + ret = (URP);
- + } else
- + #endif m68040
- if(c2=='s' && c3=='p') {
- n=3;
- ret = USP;
- ***************
- *** 673,679 ****
- --- 790,803 ----
- return FAIL;
- }
- for(strend=str;*strend;strend++)
- + #if defined(CANON) && defined(SUN_ASM_SYNTAX)
- + if (*strend == ' ' || *strend == '\t') {
- + *strend = '\0';
- + break;
- + }
- + #else
- ;
- + #endif CANON && SUN_ASM_SYNTAX
- --strend;
-
- /* Guess what: A constant. Shar and enjoy */
- ***************
- *** 1016,1022 ****
- --- 1140,1154 ----
- /* Scan up to end of operation-code, which MUST end in end-of-string
- or exactly 1 space. */
- for (p = instring; *p != '\0'; p++)
- + #if defined(CANON) && defined(SUN_ASM_SYNTAX)
- + /*
- + * On SUN's Assembler, an operator and operands can be
- + * separeted by spaces or tabs. (Shin)
- + */
- + if (*p == ' ' || *p == '\t')
- + #else
- if (*p == ' ')
- + #endif CANON && SUN_ASUM_SYNTAX
- break;
-
-
- ***************
- *** 1032,1037 ****
- --- 1164,1176 ----
- look it up in the hash table, then fix it back. */
- c = *p;
- *p = '\0';
- + #ifdef m68040
- + if (m68k_kind == 4 && (
- + (instring[0] == 'f' && indirect_fp_inst(instring))
- + || m68020_only_inst(instring) )){
- + opcode = NULL;
- + } else
- + #endif m68040
- opcode = (struct m68_incant *)hash_find (op_hash, instring);
- *p = c;
-
- ***************
- *** 1042,1047 ****
- --- 1181,1192 ----
- return;
- }
-
- + #if defined(CANON) && defined(SUN_ASM_SYNTAX)
- + for (; *p != '\0'; p++)
- + if (!(*p == ' ' || *p == '\t'))
- + break;
- + #endif CANON && SUN_ASM_SYNTAX
- +
- /* found a legitimate opcode, start matching operands */
- for(opP= &the_ins.operands[0];*p;opP++) {
- p = crack_operand (p, opP);
- ***************
- *** 1170,1175 ****
- --- 1315,1326 ----
- losing++;
- break;
-
- + #ifdef m68040
- + case 'a':
- + if(opP->mode!=AINDR)
- + losing++;
- + break;
- + #endif m68040
- case 'A':
- if(opP->mode!=AREG)
- losing++;
- ***************
- *** 1179,1185 ****
- --- 1330,1343 ----
- if(opP->mode!=ABSL)
- losing++;
- break;
- + #ifdef m68040
- + case 'c':
- + if(opP->mode!=MSCR || opP->reg<NC || opP->reg>BC)
- + losing++;
- + break;
-
- + #endif
- +
- case 'C':
- if(opP->mode!=MSCR || opP->reg!=CCR)
- losing++;
- ***************
- *** 1208,1214 ****
- --- 1366,1378 ----
- break;
-
- case 'J':
- + #ifdef m68040
- + if(opP->mode!=MSCR ||
- + ((opP->reg<USP && opP->reg>MSP) &&
- + (opP->reg<TC && opP->reg>SRP)))
- + #else
- if(opP->mode!=MSCR || opP->reg<USP || opP->reg>MSP)
- + #endif m68040
- losing++;
- break;
-
- ***************
- *** 1362,1368 ****
- /* This switch is a doozy.
- What the first step; its a big one! */
- switch(s[0]) {
- -
- case '*':
- case '~':
- case '%':
- --- 1526,1531 ----
- ***************
- *** 1761,1766 ****
- --- 1924,1932 ----
- case '+':
- case '-':
- case 'A':
- + #ifdef m68040
- + case 'a':
- + #endif m68040
- install_operand(s[1],opP->reg-ADDR);
- break;
-
- ***************
- *** 1860,1865 ****
- --- 2026,2037 ----
- }
- break;
-
- + #ifdef m68040
- + case 'c':
- + install_operand(s[1],opP->reg-NC);
- + break;
- + #endif m68040
- +
- case 'C': /* Ignore it */
- break;
-
- ***************
- *** 1928,1933 ****
- --- 2100,2131 ----
- case ISP:
- tmpreg=0x804;
- break;
- + #ifdef m68040
- + case TC:
- + tmpreg=0x003;
- + break;
- + case ITT0:
- + tmpreg=0x004;
- + break;
- + case ITT1:
- + tmpreg=0x005;
- + break;
- + case DTT0:
- + tmpreg=0x006;
- + break;
- + case DTT1:
- + tmpreg=0x007;
- + break;
- + case MMUSR:
- + tmpreg=0x805;
- + break;
- + case URP:
- + tmpreg=0x806;
- + break;
- + case SRP:
- + tmpreg=0x807;
- + break;
- + #endif m68040
- default:
- abort();
- }
- ***************
- *** 2246,2251 ****
- --- 2444,2454 ----
- case '8':
- the_ins.opcode[1]|=val<<10;
- break;
- + #ifdef m68040
- + case '9':
- + the_ins.opcode[0]|=val<<6;
- + break;
- + #endif m68040
- #ifdef m68851
- case '9':
- the_ins.opcode[1]|=val<<5;
- ***************
- *** 2321,2326 ****
- --- 2524,2536 ----
- register int c;
- register char *beg_str;
-
- + /*
- + #ifdef CANON && SUN_ASM_SYNTAX
- + for (; *str != '\0'; str++)
- + if (!(*str == ' ' || *str == '\t'))
- + break;
- + #endif CANON && SUN_ASM_SYNTAX
- + */
- if(!str) {
- return str;
- }
- ***************
- *** 3244,3249 ****
- --- 3454,3465 ----
- break;
- case SEG_ABSOLUTE:
- switch(ok) {
- + #ifdef m68040
- + case 5:
- + if(offs(exp)<0 || offs(exp)>3)
- + goto outrange;
- + break;
- + #endif m68040
- case 10:
- if(offs(exp)<1 || offs(exp)>8) {
- as_warn("expression out of range: defaulting to 1");
- ***************
- *** 3388,3393 ****
- --- 3604,3612 ----
- break;
-
- case 'm':
- + #ifdef m68040
- + m68k_kind = 0;
- + #endif m68040
- /* Gas almost ignores this option! */
- (*argP)++;
- if(**argP=='c')
- ***************
- *** 3402,3407 ****
- --- 3621,3633 ----
- } else if(!strcmp(*argP,"68020"))
- flagseen['m']=0;
- else
- + #ifdef m68040
- + if(!strcmp(*argP,"68040")) {
- + flagseen['m']=0;
- + m68k_kind = 4;
- + }
- + else
- + #endif m68040
- as_warn("Unknown -m option ignored");
- while(**argP)
- (*argP)++;
- ***************
- *** 3551,3553 ****
- --- 3777,3802 ----
- abort();
- }
- #endif
- +
- + #ifdef m68040
- + indirect_fp_inst(name)
- + char *name;
- + {
- + char **fpinst;
- +
- + for (fpinst = indirect_fp_opcodes; fpinst < endfpinst; fpinst++) {
- + if (!strncmp(name, *fpinst, strlen(*fpinst))
- + && strlen(name) == strlen(*fpinst)+1)
- + return TRUE;
- + }
- + return FALSE;
- + }
- +
- + m68020_only_inst(name)
- + char *name;
- + {
- + if (!strcmp(name, "callm") || !strcmp(name, "rtm"))
- + return TRUE;
- + return FALSE;
- + }
- + #endif m68040
- *** 1.1 1992/04/02 22:37:22
- --- read.c 1992/04/03 03:33:51
- ***************
- *** 1117,1122 ****
- --- 1117,1128 ----
- input_line_pointer --; /* Backup over what was not a ','. */
- temp_fill = 0;
- }
- + #ifdef CANON
- + if ( temp_repeat == 0 ) {
- + ignore_rest_of_line();
- + return;
- + }
- + #endif CANON
- if ( temp_repeat <= 0 ) {
- as_warn("Repeat < 0, .space ignored");
- ignore_rest_of_line();
- *** 1.1 1992/04/02 22:42:46
- --- stack.c 1992/04/03 03:33:53
- ***************
- *** 3,9 ****
- #ifndef CROSSATARI
- #ifndef atariminix
- #ifdef atarist
- ! int _stksize = -1L;
- #endif
- #endif
- #endif
- --- 3,10 ----
- #ifndef CROSSATARI
- #ifndef atariminix
- #ifdef atarist
- ! long _stksize = -1L;
- ! unsigned long __DEFAULT_BUFSIZ__ = 64*1024L; /* why not ! */
- #endif
- #endif
- #endif
- *** 1.1 1992/04/02 22:37:22
- --- version.c 1992/04/03 03:33:56
- ***************
- *** 1,7 ****
- --- 1,15 ----
- #if defined(__STDC__) || defined(const)
- const
- #endif
- + #ifdef CANON
- + char version_string[] = "GNU assembler version 1.38(Modified 1.5)\n";
- + #else
- + #if defined(CROSSATARI) || defined(atarist) || defined(atariminix)
- + char version_string[] = "GNU assembler version 1.38";
- + #else
- char version_string[] = "GNU assembler version 1.38\n";
- + #endif /* atari */
- + #endif CANON
-
- /* DO NOT PUT COMMENTS ABOUT CHANGES IN THIS FILE.
-
-